<?php
/**
 * @package		orcamento	
 * @desc		Componente voltado to listar produtor e entreoutros
 * @author	    Lucas Emmanoel Araujo Machado (lucasemmanoel@gmail.com).
 * @since		2011-04-10	
 * @abstract	Model do Componente
 */

// Não permite o acesso direto ao arquivo.
defined( '_JEXEC' ) or die( 'Restricted access' );

// Recursos Joomla! para trabalhar com models.
jimport( 'joomla.application.component.model' );

class OrcamentosModelOrcamento extends JModel
{
	/*
	 * Constructor (recupera o valor do ID)
	 */
	function __construct( )
	{
		parent::__construct( );
	}
	
	function &getProdutos( $id_categoria )
	{
		// Load the data
		$query = ' SELECT * FROM #__orcamento_produto'.
				'  WHERE id_categoria = '.$id_categoria;
		$this->_db->setQuery( $query );
		$data = $this->_db->loadObjectList();
		return $data;
	}

	function &getItensProdutos( $ids, $qnt )
	{
		foreach( $ids as $id )
		{
			$sql[] = 'id = '.$id;
		}
		// Load the data
		$query = ' SELECT * FROM #__orcamento_produto WHERE '
			.implode(' OR ', $sql);
		$this->_db->setQuery( $query );
		$data = $this->_db->loadObjectList();
		for ($i = 0; count($data) > $i; $i++){
			$listaDados[$i] = $data[$i];
			$listaDados[$i]->qnt = $qnt[$data[$i]->id]->qnt;
		}
		return $data;
	}

	function &getCategoria( $id_categoria )
	{
		// Load the data
		$query = ' SELECT * FROM #__orcamento_categoria'.
				'  WHERE id = '.$id_categoria;
		$this->_db->setQuery( $query );
		$data = $this->_db->loadObject();
		return $data;
	}
	
	// Método para armazenar os dado no banco de dados
	function addItem( $data )
	{
		$mudou = false;
		// recupera instancia do banco de dados
		$adiciona = array_keys($data, 'Solicitar Cotação');
		$session	=& JFactory::getSession();
		if( count($adiciona) == 1)
		{
			$adiciona = array_reverse(explode('_',$adiciona[0]));
			$adiciona = $adiciona[0];
			if($session->has('produtos'))
			{
				$produtos = $session->get('produtos');
				for( $i = 0; count($data['quantidade']) > $i ;$i++){
					if($data['quantidade'][$i] && $data['id_produto'][$i] == $adiciona ){
						$produtos[$data['id_produto'][$i]]->qnt	+= intval($data['quantidade'][$i]);
					}
				}
			}
			else{
				for( $i = 0; count($data['quantidade']) > $i ;$i++){
					if($data['quantidade'][$i] && $data['id_produto'][$i] == $adiciona){
						$produtos[$data['id_produto'][$i]]->qnt	= intval($data['quantidade'][$i]);
					}
				}
			}
			if($session->has('nprodutos')){
				$nprodutos = $session->get('nprodutos');
				for( $i = 0; count($nprodutos)>$i ; $i++ ){
					if(
							$nprodutos[$i]->cat		== $data['ncategoria']
							&& $nprodutos[$i]->desc == $data['ndescricao']
							&& $nprodutos[$i]->part == $data['npart']
							&& $nprodutos[$i]->marca == $data['nmarca']
							&& intval($data['nQuantidade']) != 0
							&& $adiciona == 'n'
					)
					{
						$nprodutos[$i]->qnt += intval($data['nQuantidade']);
						$mudou = true;
					}
				}
				if( !$mudou && intval($data['nQuantidade']) != 0 && $adiciona == 'n' ){
					$nprodutos[$i]->cat		= $data['ncategoria'];
					$nprodutos[$i]->desc	= $data['ndescricao'];
					$nprodutos[$i]->part	= $data['npart'];
					$nprodutos[$i]->marca	= $data['nmarca'];
					$nprodutos[$i]->qnt		= intval($data['nQuantidade']);
				}
			}
			elseif(intval($data['nQuantidade']) != 0 && $adiciona == 'n'){
				$i = count($nprodutos);
				$nprodutos[$i]->cat		= $data['ncategoria'];
				$nprodutos[$i]->desc	= $data['ndescricao'];
				$nprodutos[$i]->part	= $data['npart'];
				$nprodutos[$i]->marca	= $data['nmarca'];
				$nprodutos[$i]->qnt		= intval($data['nQuantidade']);
			}
			$session->set('nprodutos', $nprodutos);
			$session->set('produtos',$produtos);
		}
		return true;
	}
	function removeItem($dados){
		$session =& JFactory::getSession();
		$remove = array_keys($dados, 'Retirar');
		if(count($remove) == 1){
			$remove = explode('_', $remove[0]);
			if($remove[0] == 'nbtremove')
			{
				$nProdutos = $session->get('nprodutos');
				$num = array_keys($nProdutos);
				for( $i = 0; count($num)>$i; $i++){
					if( $num[$i] == $remove[1]){
						$nProdutos[$i]->qnt	-= intval($dados['nQuantidade'][$i]);
						if( $nProdutos[$i]->qnt < 1 ){
							unset($nProdutos[$i]);
						}
					}
				}
				if(empty($produtos)){
					$session->clear('nprodutos');
				}
				else{
					$session->set('nprodutos', $produtos);
				}
			}
			elseif($remove[0] == 'btremove')
			{
				$produtos = $session->get('produtos');
				for($i = 0; count($dados['id_produto']) > $i; $i++){
					if($remove[1] == $dados['id_produto'][$i]){
						$produtos[$remove[1]]->qnt	-= $dados['quantidade'][$i];
						if( $produtos[$remove[1]]->qnt < 1 ){
							unset($produtos[$remove[1]]);
						}
					}
				}
				if(empty($produtos)){
					$session->clear('produtos');
				}
				else{
					$session->set('produtos', $produtos);
				}
			}
		}
	}
	function store( $data )
	{
		// recupera instancia do banco de dados
		$row =& $this->getTable( 'cliente'  );
		

		// Passa os dados do form para a table
		if ( !$row->bind( $data ) ) {
			$this->setError( $row->getErrorMsg( ) );
			return false;
		}

		// Checa consistencia dos dados
		if ( !$row->check( ) ) {
			$this->setError( $row->getErrorMsg( ) );
			return false;
		}
		// Salva os dados no banco de dados
		if ( !$row->store( ) ) {
			$this->setError( $row->getErrorMsg( ) );
			return false;
		}
		return true;
	}
}
